package reflection;

import org.junit.Test;

import java.lang.reflect.Modifier;

/**
 * @author 吴阳基
 * @datetime 2024/1/3 11:55
 */
public class ShiLi2 {
    @Test
    public void test() {
        Class clz = Person.class;
        String fullName = clz.getName();
        String simpleName = clz.getSimpleName();

        System.out.println("以下是" + fullName + "类的基本信息");
        System.out.println("类名：" + fullName);
        System.out.println("简单类名：" + simpleName);
        System.out.println("包名：" + clz.getPackage().getName());
        System.out.println("父类：" + clz.getSuperclass().getName());
        System.out.println("接口：");
        Class[] interfaces = clz.getInterfaces();
        for (Class anInterface : interfaces) {
            System.out.println(anInterface.getName());
        }
        System.out.println("修饰符：");
        int modifiers = clz.getModifiers();
        System.out.println(modifiers);
        if ((modifiers & Modifier.PUBLIC) == Modifier.PUBLIC)
            System.out.println("访问修饰符是 public");
        if ((modifiers & Modifier.PRIVATE) == Modifier.PRIVATE)
            System.out.println("访问修饰符是 private");
        if ((modifiers & Modifier.PROTECTED) == Modifier.PROTECTED)
            System.out.println("访问修饰符是 protected");
        if ((modifiers & Modifier.STATIC) == Modifier.STATIC)
            System.out.println("static");
        if ((modifiers & Modifier.FINAL) == Modifier.FINAL)
            System.out.println("这个类是 final");
        if ((modifiers & Modifier.ABSTRACT) == Modifier.ABSTRACT)
            System.out.println("这是一个抽象类 abstract");
        if ((modifiers & Modifier.INTERFACE) == Modifier.INTERFACE)
            System.out.println("这是一个接口 interface");
    }
}
